package org.bopis.general;

import java.io.InputStream;
import java.util.Properties;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * Clase usada para manejar el fichero de properties de la aplicacion. La clase
 * implementa el patron Singleton.
 * 
 * @author i-fernandezmolina
 * 
 */
public class BopisProperties {

	// variables de la clase
	private static BopisProperties instance;
	private static Properties properties;
	private String pathFile = "org/bopis/resources/bopis-app.properties";
	private Log log = LogFactory.getLog(BopisProperties.class);

	// constructor
	private BopisProperties() {

		try {
			
			InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(pathFile);
			properties = new Properties();
			properties.load(inputStream);

		} catch (Exception e) {
			log.error("Error leyendo el fichero " + pathFile);
			e.printStackTrace();
		}
	}

	/**
	 * Metodo que devuelve la instancia de la clase
	 * 
	 * @return instancia de la clase
	 */
	public static BopisProperties getInstance() {
		if (instance == null)
			instance = new BopisProperties();
		return instance;
	}

	/**
	 * Metodo que devuelve la propiedad indicada por la cadena que se pasa por
	 * parametro
	 * 
	 * @param property
	 *            - cadena con la propiedad buscada
	 * @return cadena con el valor de la propiedad
	 */
	public String getProperty(String property) {
		return properties.getProperty(property);
	}

	/**
	 * Metodo que devuelve la propiedad indicada por la cadena que se pasa por
	 * parametro
	 * 
	 * @param property
	 *            - cadena con la propiedad buscada
	 * @param default - valor que devolvera por defecto si no encuentra la
	 *        propiedad buscada
	 * @return cadena con el valor de la propiedad
	 */
	public String getProperty(String property, String aux) {
		return properties.getProperty(property, aux);
	}

}